home *** CD-ROM | disk | FTP | other *** search
-
- #include <ctype.h>
- #include <stdarg.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- int rprintf(char *fmt, ...)
- {
- va_list args;
- int len, count;
- char *r, *f, *c;
- char rpt_fmt[200];
-
- for (r=rpt_fmt, f=fmt; (*r = *f) != '\0'; r++, f++)
- if (f[0] == '%' && isdigit(f[1]))
- if ((c=f+1+strspn(f+1,"0123456789"))[0] == 'r' && c[1] == '(')
- {
- for (count=atoi(f+1), f=c+2; count != 0; count--)
- for (c = f; *c && *c != ')'; *r++ = *c++)
- ;
- r--;
- f = c;
- }
-
- va_start(args, fmt);
- len = vprintf(rpt_fmt, args);
- va_end(args);
-
- return len;
- }
-
- void main(void)
- {
- rprintf("rprintf output is:\n\n");
- rprintf("One=%d, Two=%d.\n", 1, 2);
- rprintf("Digits=%10r(%d).\n", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
- rprintf("Digits=%d%9r(, %d).\n", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
- }
-
- rprintf output is:
-
- One=1, Two=2.
- Digits=0123456789.
- Digits=0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
-
-